// 请求常量
export const API = {
  // 请求状态码
  code: {
    SUCCESS: '00000',
    FAIL: 'A0001',
    NOTLOGIN: 'B0001',
    OTHERFAIL: 'C0001'
  },
  // 请求信息
  msg: {
    SUCCESS: '请求成功',
    FAIL: '用户端错误!',
    NOTLOGIN: '系统执行错误!',
    OTHERFAIL: '调用第三方服务错误!',
    DEFAULT: '系统未知错误，请联系管理员'
  },
  getMsg(code){
    let message = this.msg.DEFAULT;
    const codeEntries = Object.entries(this.code);
    const findCode = codeEntries.find(codeItem => codeItem[1] === code);
    if (findCode) {
      message = this.msg[findCode[0]];
    }
    return message;
  },
  // 上传通用常量
  upload: {
    // 通用文件限制大小
    commonLimit: 20 * 1024 * 1024,
    generateSender: 250 * 1024,
    // 大文件上传切片大小
    chunkSize: 1 * 1024 * 1024,
    // 大文件文件大小限制
    bigFileLimitSize: 10 * 1024 * 1024 * 1024,
    bigFileLimitTypes: ['zip']
  },
  // 算法
  steganography: {
    // 任务状态
    taskStatus: [
      { value: 1, label: '初始化' },
      { value: 2, label: '已启动' },
      { value: 3, label: '执行中' },
      { value: 4, label: '已完成' },
      { value: 5, label: '失败' }
    ],
    // 算法模块选择
    systems: [
      { value: 1, label: 'Windows' },
      { value: 2, label: 'Android' }
    ],
    type: {
      // 嵌入
      IMPLANT: 0,
      // 提取
      EXTRACT: 1
    },
    // 模块类型
    moduleType: {
      ONE: 1,
      TWO: 2,
      THREE: 3,
      FOUR: 4,
      APPONE: 51,
      APPTWO: 52,
      APPTHREE: 53,
      APPFOUR: 54,
      ANALYSIS: 99
    }
  },
  // 课题三
  publicSteg: {
    keyTypes: [
      { value: 'ECC', label: 'ECC' },
      { value: 'RSA', label: 'RSA' }
    ],
    // 嵌入任务任务状态
    implantStatus: [
      { value: 1, label: '已嵌入公钥' },
      { value: 2, label: '已嵌入私钥' },
      { value: 3, label: '已发布签名' }
    ],
    extractStatus: [
      { value: 1, label: '已提取公钥' },
      { value: 2, label: '已提取私钥' },
      { value: 3, label: '已提取签名' }
    ]
  },
  generate: {
    staticUrl: '',
    staticURL: ''
  },
  fusion: {
    // 载体文件回显判断
    getModuleShow(url, module){
      let fileType = url.slice(url.lastIndexOf('.') + 1);
      let images = ['jpg', 'jpeg', 'png'],
          audios = ['mp3', 'wav'],
          txts = ['txt'],
          moduleType;
      if (module === '文本' || txts.includes(fileType)) {
        moduleType = '文本'; 
      } else if (module === '音频' || audios.includes(fileType)){
        moduleType = '音频';
      } else if (images.includes(fileType)){
        moduleType = '图像';
      }
      return moduleType;
    },
    status: [
      { value: 1, label: '初始化' },
      { value: 2, label: '已启动' },
      { value: 3, label: '执行中' },
      { value: 4, label: '已完成' },
      { value: 5, label: '失败' }
    ],
    // 示范一任务类别
    fusionOneTaskType: [
      { value: 0, label: '发送端任务' },
      { value: 1, label: '接收端任务' } 
    ],
    // 示范二嵌入端任务状态
    appTwoImplantStatus: [
      { value: 1, label: '已嵌入文件'}
    ],
    appTwoExtractStatus: [
      { value: 1, label: '已提取文件'}
    ],
    appThreeStatus: [
      { value: 1, label: '已请求公钥' },
      { value: 2, label: '已发布公钥' },
      { value: 3, label: '已发布签名' },
      { value: 4, label: '已认证签名' },
      { value: 5, label: '已提取消息' }
    ],
    appFourStatus: [
      { value: 1, label: '已嵌入签名' },
      { value: 2, label: '已认证签名' },
      { value: 3, label: '已提取消息' }
    ]
  },
  // 课题通用任务
  steCommon: {
    // 任务媒体类型描述数组
    modules: [
      { value: '图像', label: '图像' },
      { value: '文本', label: '文本' },
      { value: '音频', label: '音频' }
    ],
    parameters: [
      { value: 'parameter1', label: '参数文件1' },
      { value: 'parameter2', label: '参数文件2' },
      { value: 'parameter3', label: '参数文件3' },
      { value: 'parameter4', label: '参数文件4' },
      { value: 'parameter5', label: '参数文件5' }
    ]
  }
}

// 全局常量对象
export const GLOBAL = {
  // 项目标题
  projectTitle: '算法融合平台',
  // 通用消息信息
  message: {
    validFail: '当前输入项不符合输入规则，请核对！'
  }
}